home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / Apps / AudioApps / mac2snd / mac2snd.c < prev    next >
C/C++ Source or Header  |  1992-12-20  |  2KB  |  97 lines

  1. /*
  2.    convert - by Robert Hood
  3.    
  4.    this program converts some type of mac sound files to NeXT sound files 
  5.    Don't flame me about the code.  It wasn't written to be nice to users, 
  6.    or be a piece of art.  
  7. */
  8.  
  9. #include <stdio.h>
  10.  
  11. main (argc, argv)
  12. int argc;
  13. char *argv [];
  14.     {
  15.     FILE *input, *output;
  16.     char filename [256], outname [256];
  17.     int temp,last;
  18.     char temp2;
  19.     int fast = 0;     /*  11 kHz sample rate */
  20.     unsigned char ch;
  21.  
  22.     if (argc <= 1)
  23.         {
  24.         fprintf (stderr, "Usage: convert [-22] filename\n\n");
  25.         exit (-1);
  26.         }
  27.     
  28.     filename [0] = 0;
  29.     
  30.     for (temp = 1; temp < argc; ++temp)
  31.         {
  32.         if (strcmp ("-22", argv [temp]) == 0)
  33.             {
  34.             fast = 1;    /* 22 kHz sample rate */
  35.             }
  36.         else
  37.             {
  38.             strcpy (filename, argv [temp]);
  39.             }
  40.         }
  41.     if (filename [0] == 0)
  42.         {
  43.         fprintf (stderr, "You didn't specifiy a filename\n");
  44.         exit (-1);
  45.         }
  46.     if ((input = fopen (filename, "rb")) == 0)
  47.         {
  48.         perror (filename);
  49.         exit (-1);
  50.         }
  51.     strcpy (outname, filename);
  52.     strcat (outname, ".snd");
  53.     if ((output = fopen (outname, "wb")) == 0)
  54.         {
  55.         perror (outname);
  56.         exit (-1);
  57.         }
  58.     temp = 0x2E736E64;  /* magic */
  59.         fwrite (&temp, 4, 1, output);
  60.     temp = 0x0000001C;  /* start of sound */
  61.     fwrite (&temp, 4, 1, output);
  62.     temp = 0x98 + 1;   /* end of sound...doesn't seem to matter */
  63.     fwrite (&temp, 4, 1, output);
  64.     temp = 0x00000003; /* ?? */
  65.     fwrite (&temp, 4, 1, output);
  66.     temp = 0x00005622;  /* sample frequency */
  67.     fwrite (&temp, 4, 1, output);
  68.     temp = 0x00000001; /* ?? */
  69.     fwrite (&temp, 4, 1, output);
  70.     temp = 0x00000000;  /* space filler? */
  71.     fwrite (&temp, 4, 1, output);
  72.     temp = 0x00000000;  /* space filler? */
  73.     fwrite (&temp, 4, 1, output);
  74.  
  75.     last = 0;
  76.     while (!feof (input))
  77.         {
  78.         ch = getc (input);
  79.  
  80.         temp = ch;
  81.             temp = (128 - temp) * (int)64;
  82.  
  83.         if (!fast)   /* 11 kHz is simulated by averaging the input */
  84.             {
  85.             last = (last + temp) / 2;
  86.             putc ((last >> 8) & 0xFF, output);
  87.             putc ((last) & 0xFF, output);
  88.             last = temp;
  89.             }
  90.         putc ((temp >> 8) & 0xFF, output);
  91.         putc ((temp) & 0xFF, output);
  92.         }
  93.     fclose (input);
  94.         fclose (output);
  95.     }
  96.  
  97.